草庐IT

Java BufferedImage 内存消耗

全部标签

c++ - 非模板类中模板函数的内存模型?

假设我有:templateclassA{//DosomethingwithT};我知道编译器会生成一个classA对于每个不同的T在代码中定义。如果我有:classB{templatevoidf(){/*DosomethingwithT*/}};classB是否只有一个定义?但是f()的多个重载对于每个不同的T它叫什么? 最佳答案 是的,每次实例化f会有f()的定义由编译器生成。根据编译器的不同,f()可以通过内联进行优化,或者它可以在代码段中获取那么多空间。但是,我很少遇到这种在非模板类中有一个非静态模板成员函数(没有任何参数!)

c++ - std::sort() 和 std::sort_heap() 的内存复杂度是多少?

如标题-std::sort()和std::sort_heap()的内存复杂度是多少?(后者需要std::make_heap()所以我也想知道它的内存复杂度。)我尝试在这些网站上搜索:http://www.cplusplus.com/reference/http://en.cppreference.com/w/但要么我错过了,要么他们只提到了时间复杂度。上述函数的内存复杂性是否在任何地方指定(在C++标准或其他文档中)?或者这可能取决于实现? 最佳答案 对于std::sort()我在Cboard上找到了一个答案,它几乎是这样说的:Qu

c++ - 为什么 std::deque 在默认构造函数中为其元素分配内存?

使用g++5.4编译器和GNU标准库libstdc++.so.6,std::vector的默认构造函数创建一个空容器,仅初始化堆栈上的内部簿记数据成员。它稍后在堆上为数据元素分配缓冲区(当插入第一个元素时)。直到最近,我还认为这是任何具有动态分配内存的标准顺序容器的常见行为。但是,std::deque的工作方式不同。跟踪以下代码#includeintmain(){std::dequed;return0;}用ltrace给出__libc_start_main(0x4024fa,1,0x7ffd088be0f8,0x405bd0_ZNSt8ios_base4InitC1Ev(0x60835

用于可视化内存对齐的 C++ 工具?

是否有一个工具,也许是visualStudio的插件,可以为我可视化我的类和结构的内存对齐?谢谢! 最佳答案 您可能对使用Cruncher#感兴趣.引用:原文MaciejSiniloblogpost关于Cruncher#。 关于用于可视化内存对齐的C++工具?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1994845/

c++ - 无分支内存管理器?

有人想过如何编写一个完全无分支的内存管理器(在C++中)吗?我已经编写了一个池、一个堆栈、一个队列和一个链表(从池中分配),但我想知道编写一个无分支的通用内存管理器是否合理。这一切都是为了帮助构建一个真正可重用的框架,以进行可靠的并发、有序CPU和缓存友好的开发。编辑:我所说的无分支是指不进行直接或间接函数调用,也不使用ifs。我一直在想,我可能可以实现一些东西,首先将错误调用的请求大小更改为零,但实际上并没有比这更多。我觉得这并非不可能,但此练习的另一方面是在所说的“不友好”处理器上对其进行分析,看看是否值得像这样努力避免分支。 最佳答案

c++ - 嵌入式平台上的线程类内存分配异常

我遇到了一个奇怪的问题,我已经能够找到一些原因,但我仍然看不到原因。也许这里有人可以阐明一些想法?我在VxWorks5.5之上的PowerPC处理器上运行,使用PPCgnu604工具链在C++中开发。我有这样一个类:classMyClass{public:voidrun(void);private:CommandMesssageClasscommand;StatusMessageClassstatus;};当我的应用程序启动时,它将动态分配一个MyClass实例并生成一个指向其“运行”函数的线程。本质上,它只是坐在那里轮询命令,并在收到命令后返回状态。请注意,这是该类的简化版本。为简洁

c++ - 没有动态内存分配的 Lex 和 Yacc

我正在设计在禁止使用动态内存的嵌入式环境中运行的软件。Lex和Yacc非常适合该应用程序。我可以将Lex和Yacc配置为完全不使用动态内存分配吗?我能否将Lex和Yacc配置为使用预定义的内存块,从而将动态内存的使用限制在该预定义的空间内?我能否将动态内存的使用限制为仅用于程序初始化(即程序首次运行时)?编辑:作为对TonyK的回应,我希望解析器不要使用动态内存。谢谢 最佳答案 当然可以,如果您可以自己编译Lex和Yacc。你只需要实现你自己的malloc和free,并链接到它们。(假设Lex和Yacc是纯C,我认为是这样。)编辑我

c++ - 具有线程本地存储的自定义内存管理器

在我们的程序中有一个自定义的内存管理器,我们所有的malloc/free调用都由内存管理器管理,但是在程序的初始阶段getpwuid()将被调用,并且在一些客户的机器上激活了nss_ldap将从libc而不是我们的内存管理器调用malloc,这会导致我们的内存管理器出错,gdb的堆栈报告是:Breakpoint2,0x0000003df8cc6eb0inbrk()from/lib64/libc.so.600x0000003df8cc6eb0inbrk()from/lib64/libc.so.610x0000003df8cc6f72insbrk()from/lib64/libc.so.6

c++ - 如何在设备内存中有效地随机播放数据?

问题在设备全局内存中移动许多随机(非合并)值时,哪种方法最有效?注意:许多值大于500。上下文我从事GPU的遗传算法实现已有一段时间了,我一直在努力在我的框架的灵active和GPU架构的微优化之间挣扎。GA数据始终驻留在GPU中。只有最佳代解决方案被复制到主机内存。详细场景我正在优化迁移功能。这里基本上很少有数据在设备全局内存中随机播放。但是我以这样的方式获得了我的数据顺序,它为GA运算符内核线程的内存访问方案合并,这使得洗牌一对“基因组”,一个跨越单个FLOAT值的问题,并以相同的跨步方式将它们与另一个基因组交换。已知解决方案问题不在于内存带宽,而是调用延迟和线程阻塞导致进程停滞的

c++ - 在进程间内存中使用 boost::optional 是否安全?

请考虑以下结构:structThingThatWillGoInSharedMemory{boost::optionalopt_value;};我正在使用boost::interprocess来创建共享内存区域。我对boost::optional的理解是它是一个有区别的union,而不是一个可为空的指针。作为一个反例,像std::map和std::vector这样使用堆的东西需要一个显式分配器才能在进程间内存中使用它们,但是boost::optional,我相当确定不使用堆并且等同于写作:structThingThatWillGoInSharedMemory{boolvalue_init